package com.saer.server.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.saer.client.dto.diagnostico.VisitaDto;
import com.saer.server.hibernate.dao.VisitaDao;
import com.saer.server.hibernate.model.Visita;
import com.saer.server.service.DiagnosticoService;

public class DiagnosticoServiceImpl implements DiagnosticoService {

	private VisitaDao visitaDao;

	public List<VisitaDto> getVisitas() {
		List<VisitaDto> result = new ArrayList<VisitaDto>();

		for (Object o : visitaDao.getVisitas()) {
			Visita visita = (Visita) o;
			result.add(new VisitaDto(
					visita.getId(),
					visita.getPaciente().getDni(),
					visita.getPaciente().getNombre(),
					visita.getPaciente().getApellido(),
					visita.getPaciente().getEdad(),
					visita.getPaciente().isSexo(),
					visita.getEnfermero().getId(),
					visita.getEnfermero().getNombre(),
					visita.getEnfermero().getApellido(),
					visita.getEnfermero().getEmail(),
					visita.getCap().getId(),
					visita.getCap().getDescripcion(),
					visita.getFecha(),
					visita.getTemperatura() != null ? visita.getTemperatura().doubleValue() : null,
					visita.getPresion_Sistolica(),					
					visita.getPresion_Distolica(),
					visita.getFrespiratoria(),
					visita.getPulsaciones(),
					visita.getGlucosaSangre(),
					visita.getOxigenoSangre(),
					visita.getSintomas(),
					visita.getEstado()));
		}

		return result;
	}
	
	public List<VisitaDto> getVisitasByCap(int centroMedicoId) {
		List<VisitaDto> result = new ArrayList<VisitaDto>();
		
		for (Object o : visitaDao.getVisitasByCap(centroMedicoId)) {
			Visita visita = (Visita) o;
		
			result.add(new VisitaDto(
					visita.getId(),
					visita.getPaciente().getDni(),
					visita.getPaciente().getNombre(),
					visita.getPaciente().getApellido(),
					visita.getPaciente().getEdad(),
					visita.getPaciente().isSexo(),
					visita.getEnfermero().getId(),
					visita.getEnfermero().getNombre(),
					visita.getEnfermero().getApellido(),
					visita.getEnfermero().getEmail(),
					visita.getCap().getId(),
					visita.getCap().getDescripcion(),
					visita.getFecha(),
					visita.getTemperatura() != null ? visita.getTemperatura().doubleValue() : null,
					visita.getPresion_Sistolica(),					
					visita.getPresion_Distolica(),
					visita.getFrespiratoria(),
					visita.getPulsaciones(),
					visita.getGlucosaSangre(),
					visita.getOxigenoSangre(),
					visita.getSintomas(),
					visita.getEstado()));
		}

		return result;
	}
	
	public List<VisitaDto> getVisitasByHospital(int hospitalId) {
	
		List<VisitaDto> result = new ArrayList<VisitaDto>();
		
		for (Object o : visitaDao.getVisitasByHospital(hospitalId)) {
			Visita visita = (Visita) o;
		
			result.add(new VisitaDto(
					visita.getId(),
					visita.getPaciente().getDni(),
					visita.getPaciente().getNombre(),
					visita.getPaciente().getApellido(),
					visita.getPaciente().getEdad(),
					visita.getPaciente().isSexo(),
					visita.getEnfermero().getId(),
					visita.getEnfermero().getNombre(),
					visita.getEnfermero().getApellido(),
					visita.getEnfermero().getEmail(),
					visita.getCap().getId(),
					visita.getCap().getDescripcion(),
					visita.getFecha(),
					visita.getTemperatura() != null ? visita.getTemperatura().doubleValue() : null,
					visita.getPresion_Sistolica(),					
					visita.getPresion_Distolica(),
					visita.getFrespiratoria(),
					visita.getPulsaciones(),
					visita.getGlucosaSangre(),
					visita.getOxigenoSangre(),
					visita.getSintomas(),
					visita.getEstado()));
		}

		return result;
		
	}
	
	public void setVisitaDao(VisitaDao visitaDao) {
		this.visitaDao = visitaDao;
	}

	public void updateStatusVisita(int id, int status) {
		visitaDao.updateStatusVisita(id, status);
	}

}
